package com.seeyon.apps.lzmzj.kit;

import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.filemanager.dao.AttachmentDAO;
import com.seeyon.ctp.common.filemanager.manager.FileManager;
import com.seeyon.ctp.common.log.CtpLogFactory;
import com.seeyon.ctp.common.po.filemanager.Attachment;
import com.seeyon.ctp.common.po.filemanager.V3XFile;
import org.apache.commons.logging.Log;

public class FileKit {

    private static final Log log = CtpLogFactory.getLog(FileKit.class);

    private static FileManager fileManager = (FileManager) AppContext.getBean("fileManager");
    private static AttachmentDAO attachmentDAO = (AttachmentDAO) AppContext.getBean("attachmentDAO");


    /**
     * 添加附件信息
     * <p>
     * * @param invoiceType 票据类型
     *
     * @param fileId        文件ID，用于从文件管理中获取文件信息
     * @param dataId        数据ID，表示附件所属的数据项
     * @param sub_reference 子引用ID，用于进一步细化附件的归属或分类
     */
    public static void addAttachment(Long fileId, Long dataId, Long sub_reference) {
        try {
            // 从文件管理中获取V3X文件对象
            V3XFile v3xFile = fileManager.getV3XFile(fileId);

            // 创建一个新的Attachment对象
            Attachment attachment = new Attachment();
            // 如果是新的附件，则设置其ID
            attachment.setIdIfNew();
            // 设置附件的类别为66，这里的66可能是预定义的附件类别代码
            attachment.setCategory(66);
            // 设置附件的创建日期
            attachment.setCreatedate(v3xFile.getCreateDate());
            // 设置附件的描述信息
            attachment.setDescription(v3xFile.getDescription());
            // 设置附件的文件名
            attachment.setFilename(v3xFile.getFilename());
            // 设置附件的文件URL，这里使用文件ID作为URL
            attachment.setFileUrl(v3xFile.getId());
            // 设置附件的引用ID，表示附件所属的数据项
            attachment.setReference(dataId);
            // 设置附件的子引用ID，用于进一步细化附件的归属或分类
            attachment.setSubReference(sub_reference);
            // 设置附件的类型
            attachment.setType(v3xFile.getType());
            // 设置附件的MIME类型
            attachment.setMimeType(v3xFile.getMimeType());
            // 设置附件的大小
            attachment.setSize(v3xFile.getSize());
            // 设置附件的排序字段，默认为1
            attachment.setSort(1);

            // 保存附件信息到数据库
            attachmentDAO.save(attachment);
        } catch (Exception e) {
            // 记录添加附件信息失败的日志
            log.error("添加附件信息失败:", e);
        }
    }
}
